<?php
/**
 * Modelo para la interaccion con los datos de los usuarios (tabla usuarios)
 *
 * @author 3WD
 */

class Usuarios_model extends CI_Model {

	/**
	 * Valores predeterminados en los campos de la base de datos
	 */
	private $defaults = array(
		'lang' => 'es_VE.utf8'
	);

    function __construct()
    {
        // Call the Model constructor
        parent::__construct();
    }

	//generales
	function get_nombre($id_usuario){
		$this->db->select("nombre");
		$this->db->from(SYSTEM_PREFIX.'usuarios');
		$this->db->where('id_usuario', $id_usuario);
		$consulta = $this->db->get();
	
		
		if ($consulta->num_rows() > 0){		
			foreach ($consulta->result_array() as $fila)
			{
				return $fila['nombre'];
			}
		} else {
			return 0;	
		}
	}
	
	function get_login($id_usuario){
		$this->db->select("login");
		$this->db->from(SYSTEM_PREFIX.'usuarios');
		$this->db->where('id_usuario', $id_usuario);
		$consulta = $this->db->get();
	
		
		if ($consulta->num_rows() > 0){		
			foreach ($consulta->result_array() as $fila)
			{
				return $fila['login'];
			}
		} else {
			return 0;	
		}		
	}
	
	function get_password($id_usuario){
		$this->db->select("password");
		$this->db->from(SYSTEM_PREFIX.'usuarios');
		$this->db->where('id_usuario', $id_usuario);
		$consulta = $this->db->get();
	
		
		if ($consulta->num_rows() > 0){		
			foreach ($consulta->result_array() as $fila)
			{
				return $fila['password'];
			}
		} else {
			return 0;	
		}		
	}
	
	function get_email($id_usuario){
		$this->db->select("email");
		$this->db->from(SYSTEM_PREFIX.'usuarios');
		$this->db->where('id_usuario', $id_usuario);
		$consulta = $this->db->get();
	
		
		if ($consulta->num_rows() > 0){		
			foreach ($consulta->result_array() as $fila)
			{
				return $fila['email'];
			}
		} else {
			return 0;	
		}		
	}
	
	function get_tipo_usuario($id_usuario){
		$this->db->select("tipo_usuario");
		$this->db->from(SYSTEM_PREFIX.'usuarios');
		$this->db->where('id_usuario', $id_usuario);
		$consulta = $this->db->get();
	
		
		if ($consulta->num_rows() > 0){		
			foreach ($consulta->result_array() as $fila)
			{
				return $fila['tipo_usuario'];
			}
		} else {
			return 0;	
		}		
	}
	
	function get_hash_correo($id_usuario){
		$this->db->select("hash_correo");
		$this->db->from(SYSTEM_PREFIX.'usuarios');
		$this->db->where('id_usuario', $id_usuario);
		$consulta = $this->db->get();
	
		
		if ($consulta->num_rows() > 0){		
			foreach ($consulta->result_array() as $fila)
			{
				return $fila['hash_correo'];
			}
		} else {
			return 0;	
		}		
	}	

	function get_hash_correo_fecha($id_usuario){
		$this->db->select("hash_correo_fecha");
		$this->db->from(SYSTEM_PREFIX.'usuarios');
		$this->db->where('id_usuario', $id_usuario);
		$consulta = $this->db->get();
	
		
		if ($consulta->num_rows() > 0){		
			foreach ($consulta->result_array() as $fila)
			{
				return $fila['hash_correo_fecha'];
			}
		} else {
			return 0;	
		}		
	}

	function get_lang($id_usuario){
		$query = $this->db->select("lang")->from(SYSTEM_PREFIX.'usuarios')->where('id_usuario', $id_usuario)->get();

		$return = array_merge($this->defaults, $query->row_array());
		return $return['lang'];
	}
	
	function set_nombre($id_usuario,$valor){
		$data = array(
		'nombre' => $valor
		);
		$this->db->where('id_usuario', $id_usuario);
		return $this->db->update(SYSTEM_PREFIX.'usuarios', $data);
	}
	
	function set_login($id_usuario,$valor){
		$data = array(
		'login' => $valor
		);
		$this->db->where('id_usuario', $id_usuario);
		return $this->db->update(SYSTEM_PREFIX.'usuarios', $data);
	}
	
	function set_password($id_usuario,$valor){
		$data = array(
		'password' => $valor
		);
		$this->db->where('id_usuario', $id_usuario);
		return $this->db->update(SYSTEM_PREFIX.'usuarios', $data);		
	}
	
	function set_email($id_usuario,$valor){
		$data = array(
		'email' => $valor
		);
		$this->db->where('id_usuario', $id_usuario);
		return $this->db->update(SYSTEM_PREFIX.'usuarios', $data);		
	}
	
	function set_hash_correo($id_usuario,$valor){
		$data = array(
		'hash_correo' => $valor
		);
		$this->db->where('id_usuario', $id_usuario);
		return $this->db->update(SYSTEM_PREFIX.'usuarios', $data);		
	}	

	function set_hash_correo_fecha($id_usuario,$valor){
		$data = array(
		'hash_correo_fecha' => $valor
		);
		$this->db->where('id_usuario', $id_usuario);
		return $this->db->update(SYSTEM_PREFIX.'usuarios', $data);		
	}

	function set_tipo_usuario($id_usuario,$valor){
		$data = array(
		'tipo_usuario' => $valor
		);
		$this->db->where('id_usuario', $id_usuario);
		return $this->db->update(SYSTEM_PREFIX.'usuarios', $data);		
	}
	
	function set_estatus_usuario($id_usuario,$valor){
		$data = array(
		'status_usuario' => $valor
		);
		$this->db->where('id_usuario', $id_usuario);
		return $this->db->update(SYSTEM_PREFIX.'usuarios', $data);		
	}	
	
//especificas	
	
	function get_password_by_login($login){
		$this->db->select("password");
		$this->db->from(SYSTEM_PREFIX.'usuarios');
		$this->db->where('login', $login);
		$this->db->where('status_usuario', 'activo');
		$consulta = $this->db->get();
	
		
		if ($consulta->num_rows() > 0){		
			foreach ($consulta->result_array() as $fila)
			{
				return $fila['password'];
			}
		} else {
			return 0;	
		}		
	}
	
	function get_id_usuario_by_login($login){
		$this->db->select("id_usuario");
		$this->db->from(SYSTEM_PREFIX.'usuarios');
		$this->db->where('login', $login);
		$consulta = $this->db->get();
	
		
		if ($consulta->num_rows() > 0){		
			foreach ($consulta->result_array() as $fila)
			{
				return $fila['id_usuario'];
			}
		} else {
			return 0;	
		}		
	}
	
	
	function set_row_usuarios($nombre,$login,$password,$email,$tipo_usuario,$status_usuario){
		$data = array(
		'nombre' => $nombre,
		'login' => $login,
		'password' => $password,
		'email' => $email,
		'status_usuario' => $status_usuario,
		'tipo_usuario' => $tipo_usuario,
		'hash_correo' => '',
		'hash_correo_fecha' => ''
		);
		$this->db->insert(SYSTEM_PREFIX.'usuarios', $data);
		
		$id = $this->db->insert_id();	
		return $id;
	
	}
	
	public function getAllUsers($sort, $direction, $limit=10, $offset=0)
	
	{
		$posts = array();
		
		$search = $this->session->userdata('search');
		
		$this->db->select("*");
		$this->db->from(SYSTEM_PREFIX.'usuarios');		
		//$this->db->where('id_grupo', '3');	
		
		if(!empty($search)) {
			$this->db->where('(nombre like "%'.$search.'%" OR login like "%'.$search.'%" OR email like "%'.$search.'%" OR status_usuario = "'.$search.'" OR tipo_usuario = "'.$search.'")');	
		}

		$this->db->order_by($sort, $direction); 
		$this->db->limit($limit, $offset); 
		return $this->db->get();
	}
	
	
	public function getNumUsers()
	{	


		$search = $this->session->userdata('search');

		$this->db->select("*");
		$this->db->from(SYSTEM_PREFIX.'usuarios');		
		//$this->db->where('id_grupo', '3');
		
		if(!empty($search)) {
						$this->db->where('(nombre like "%'.$search.'%" OR login like "%'.$search.'%" OR email like "%'.$search.'%" OR status_usuario = "'.$search.'" OR tipo_usuario = "'.$search.'")');	
		}
		
		$this->db->order_by('id_usuario', 'desc'); 

		$query = $this->db->get();	
		return $query->num_rows();

	}
	
	function get_row_user($id_usuario){
		$this->db->select("*");
		$this->db->from(SYSTEM_PREFIX.'usuarios');
		$this->db->where('id_usuario', $id_usuario);
		$consulta = $this->db->get();
	
		
		if ($consulta->num_rows() > 0){		
			foreach ($consulta->result_array() as $fila)
			{
				return $fila;
			}
		} else {
			return 0;	
		}		
	}
	
	public function delete_user($id_usuario){
				
		$this->db->where('id_usuario', $id_usuario);
		return $this->db->delete(SYSTEM_PREFIX.'usuarios');

	}


}